﻿// --------------------------------------------------------------------------------------------------------------------
// <copyright file="PropertyChangeTestModel.cs" company="JDML Consulting Ltd.">
//   Copyright 2011 Photon Project - http://photon.codeplex.com
// </copyright>
// <summary>
//   Defines the PropertyChangeTestModel type.
// </summary>
// --------------------------------------------------------------------------------------------------------------------

namespace Photon.ComponentModel.Modelling.TestAssets
{
    public class PropertyChangeTestModel : TestModelBase
    {
        #region Fields

        private string _trimmedValue;
        private int? _nullableTypeValue;
        private object _referenceTypeValue;
        private int _valueTypeValue;

        #endregion

        /// <summary>
        /// Gets or sets the value type value.
        /// </summary>
        /// <value>The value type value.</value>
        public int ValueTypeValue
        {
            get { return _valueTypeValue; }
            set { SetProperty(ref _valueTypeValue, value, () => ValueTypeValue); }
        }

        /// <summary>
        /// Gets or sets the nullable type value.
        /// </summary>
        /// <value>The nullable type value.</value>
        public int? NullableTypeValue
        {
            get { return _nullableTypeValue; }
            set { SetProperty(ref _nullableTypeValue, value, () => NullableTypeValue); }
        }

        /// <summary>
        /// Gets or sets the reference type value.
        /// </summary>
        /// <value>The reference type value.</value>
        public object ReferenceTypeValue
        {
            get { return _referenceTypeValue; }
            set { SetProperty(ref _referenceTypeValue, value, () => ReferenceTypeValue); }
        }

        /// <summary>
        /// Gets or sets the trimmed value.
        /// </summary>
        /// <value>The trimmed value.</value>
        [Trim]
        public string TrimmedValue
        {
            get { return _trimmedValue; }
            set { SetProperty(ref _trimmedValue, value, () => TrimmedValue); }
        }
    }
}